package com.hh.storeArea1.controller;

import com.hh.store.VO.QueryStorePageVo;
import com.hh.storeArea1.Vo.*;
import com.hh.storeArea1.service.StoreAreaHhService;
import com.hh.utils.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * @author Hanh
 * @date 2023/8/17 16:16s
 */
@RestController
@RequestMapping("storeAreaHh")
@CrossOrigin
public class StoreAreaController {

    @Autowired
    private StoreAreaHhService storeAreaHhService;


    /**
     * 分页查询库房库区
     * @param queryStorePageVo 接收前端给的分页查询信息
     * @return
     */
    @PostMapping("queryPage")
    private ResultVo queryStoreAreaPage(@RequestBody QueryStoreAreaPageVo queryStorePageVo){
        return storeAreaHhService.queryStorePage(queryStorePageVo);
    }

    /**
     * 新增库区与属性
     * @param addStoreAreaVo
     * @param bindingResult
     * @return
     */
    @PostMapping("add")
    private ResultVo addStoreArea(@RequestBody AddStoreAreaVo addStoreAreaVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.addStoreArea(addStoreAreaVo);
    }

    /**
     * 联调前端配合
     * @param addStoreAreaVo
     * @param bindingResult
     * @return
     */
/*
    @PostMapping("add2")
    private ResultVo addStoreArea2(@RequestBody AddForWebVo2 addStoreAreaVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.addStoreAreaForWeb(addStoreAreaVo);
    }
*/

    /**
     * 根据业务需求调整 添加功能
     * @param addStoreAreaVo
     * @param bindingResult
     * @return
     */
    @PostMapping("add3")
    private ResultVo addStoreArea3(@RequestBody @Valid AddForWebVo2 addStoreAreaVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.addStoreAreaForWeb(addStoreAreaVo);
    }


    /**
     * 联调前后端的修改
     * @param addStoreAreaVo
     * @param bindingResult
     * @return
     */
    @PostMapping("update2")
    private ResultVo updateStoreArea2(@RequestBody @Valid UpdateForWebVo2 addStoreAreaVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.updateStoreArea2(addStoreAreaVo);
    }

    /**
     * 修改库区名称及属性
     * @param updateStoreAreaVo
     * @param bindingResult
     * @return
     */
    @PostMapping("update")
    private ResultVo updateStoreArea(@RequestBody UpdateStoreAreaVo updateStoreAreaVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.updateStoreArea(updateStoreAreaVo);
    }

    /**
     * 根据code启用禁用
     * @param statusVo
     * @param bindingResult
     * @return
     */
    @PostMapping("updateStatus")
    private ResultVo updateStatus(@RequestBody UpdateStatusVo statusVo, BindingResult bindingResult){
        if (bindingResult.hasErrors()){
            return ResultVo.error(bindingResult.getFieldError().getDefaultMessage());
        }
        return storeAreaHhService.updateStatus(statusVo);
    }


    /**
     * 根据库区code获得其业务属性
     * @param code
     * @return
     */
    @GetMapping("queryStorageSectionBycode")
    private ResultVo queryAttributeByCode(@RequestParam("code")String code){
        return storeAreaHhService.queryAttributeByCode(code);
    }


}
